package com.hsjk.szwj.module.smedia.api.production;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.hsjk.szwj.module.smedia.api.production.dto.*;

import javax.validation.Valid;

/**
 * 云剪辑相关接口
 */
public interface CloudEditingApi {
    /**
     * 获取当前工程绑定的所有素材
     */
    EditingProjectMaterialsRespDTO getEditingProjectMaterials(@JsonProperty("ProjectId") String projectId);

    /**
     * 创建云剪辑工程，支持设置标题、描述、时间线和工程封面等
     */
    CreateEditingProjectRespDTO createEditingProject(CreateEditingProjectReqDTO reqDTO);

    /**
     * 将一个或多个素材添加到剪辑工程中
     */
    AddEditingProjectMaterialsRespDTO addEditingProjectMaterials(@JsonProperty("ProjectId") String projectId,
                                                                 @JsonProperty("MaterialMaps") String materialMaps);

    /**
     * 将一个或多个素材从剪辑工程中删除
     */
    DeleteEditingProjectMaterialsRespDTO deleteEditingProjectMaterials(@JsonProperty("ProjectId") String projectId,
                                                                       @JsonProperty("MaterialIds") String materialIds,
                                                                       @JsonProperty("MaterialType") String materialType);

    /**
     * 查询单个云剪辑工程的信息
     */
    EditingProjectRespDTO getEditingProject(@JsonProperty("ProjectId") String projectId,
                           @JsonProperty("RequestSource") String requestSource);

    /**
     * 修改云剪辑工程，支持修改标题、时间线和封面等
     */
    UpdateEditingProjectRespDTO updateEditingProject(@Valid UpdateEditingProjectReqDTO reqDTO);

    /**
     * 将一个或多个视频、音频、图片、字幕素材合成为成品。可以通过时间线(Timeline)参数直接提交剪辑设置，也可以先创建云剪辑工程，使用工程ID提交剪辑任务
     */
    SubmitMediaProducingJobRespDTO submitMediaProducingJob(@Valid SubmitMediaProducingJobReqDTO reqDTO);
}
